﻿#include <iostream>
#include <vector>
#include <cstdint>

#include <QDebug>
#include <QByteArray>
#include <QFile>

#include "SimpleRWFile.h"

int main() {
    std::string tempInput{};
    while (true) {
        qDebug() << "enter file name:";
        std::getline(std::cin, tempInput);
        // 打开目标文件
        QFile file1(tempInput.c_str());
        if (!file1.open(QIODevice::ReadOnly)) {
            qDebug() << "Failed to open file";
            return -1;
        }
        // 按照text格式,按行读取
        QTextStream reader(&file1);
        // 第一行不要
        reader.readLine();
        // 总数据<列索引,列数据>
        std::map<int, QList<int> > totalData{};
        // 读取后面行的数据
        while (!reader.atEnd()) {
            auto line = reader.readLine();
            // 按照,分解一行
            auto rawDatas = line.split(',');
            // 当前的列
            int col = 0;
            for (auto item: rawDatas) {
                // 转换为int,待写入的值
                int r = item.toDouble();
                totalData[col++].append(r);
            }
        }

        QByteArray outputData{};
        for (auto [col, data]: totalData) {
            for (auto item: data) {
                // 按字节写入
                outputData.append(reinterpret_cast<const char *>(&item), sizeof(int));
            }
        }

        // 写入的文件名是.csv,改为.bin
        auto outFileName = tempInput;
        auto pos = outFileName.rfind(".csv");
        if (pos != std::string::npos) {
            outFileName.replace(pos, 4, ".bin");
        } else {
            outFileName.append(".bin");
        }

        // 写入文件
        SimpleRWFile::write(QString::fromStdString(outFileName), outputData);
        qDebug() << "Write Success:" << QString::fromStdString(outFileName);

        // 打印总数据
        // for (auto [col, data]: totalData) {
        //     qDebug() << "col:" << col << "data" << data;
        // }


        // 按行读取文件内容
        // 第一行不要
        // file1.readLine();
        // 读取后面行的数据
        // while (!file1.atEnd()) {
        //     auto line = file1.readLine();
        //     qDebug() << line;
        // }
    }
}
